arterella (Normal User)
Rookie
Messaggi: 37
Iscritto: 14/07/2012
|
ciao ragazzi,
vi spiego brevemente
questa funzione serve per controllare determinate righe di un file .xml e nel caso tutte le condizioni siano soddisfatte riscrivere sopra queste righe.
Il mio problema è che questo programma gira su pc con Xp ma anche con Windows 7..... e quindi il percorso dove trovare il file è diverso.....
Codice sorgente - presumibilmente VB.NET |
Private Sub _DeleteDummyFiles() Dim lineaRicerca As String = " <CheckedFTPPresence>false</CheckedFTPPresence>" Dim lineaSostituzione As String = " <CheckedFTPPresence>RIGENERATO</CheckedFTPPresence>" Dim linee As String() = IO. File. ReadAllLines("c:/ProgramData\Settings.xml") Dim lineacontrollo As String = " <FileName>Dummy.txt</FileName>" Dim oFileState As New Settings.FileState Dim DataDate = oFileState.DataDate Dim UploadDate = oFileState.UploadDate For Each xDate In Me.Settings.SalesHeader.DatesExtracted Dim xDateExtracted = xDate.Date For i As Integer = 0 To linee.Count - 1 If linee(i) = lineaRicerca Then If linee(i - 4) = lineacontrollo Then If UploadDate < Date.Now Then linee(i) = lineaSostituzione End If End If End If Next IO. File. WriteAllLines("c:/ProgramData\Settings.xml", linee ) Next End Sub
|
C'è un modo per dirgli di cercare autonomamente dov'è questo file?
oppure è meglio se metto entrambi i percorsi?
Pero così facendo il programma credo vada in eccezione perchè non trova il percorso...
|
|
Renny (Normal User)
Expert
Messaggi: 231
Iscritto: 30/07/2011
|
Ciao..
Se tu sai il percorso del file sia nel caso in cui il programma giri su pc con WinXp sia nel caso sia con Win7, la cosa mi sembra abbastanza banale..
Con
Codice sorgente - presumibilmente Plain Text |
My.Computer.Info.OSFullName
|
O istruzioni simili recuperi il nome del sistema operativo e di conseguenza con un IF assegni la path giusta del file.
Oppure con
Codice sorgente - presumibilmente Plain Text |
Puoi verificare se un file esiste e agire di conseguenza.
Se invece devi cercare il file che si chiama setting.xml per tutto l'HD del computer.. bhe.. non so se nel frameword ci siano funzioni già pronte per ricerche complete nel PC. Altrimenti devi scrivere tu un metodo ricorsivo. Ma non è difficile.
CIAO! |
|
faraoman (Member)
Rookie
Messaggi: 39
Iscritto: 05/01/2010
|
allora, usa questa direttiva
Codice sorgente - presumibilmente Plain Text |
Environment.GetFolderPath(Environment.SpecialFolder.CommonPrograms)
|
Inizia con {Unità}:\ProgramData e seguiranno varie cartelle...
bene, da quì selezioni solo la prima parte cioè {Unità}:\ProgramData
e gli accodi il nome del file (Settings.xml)
Esempio
C:\ProgramData\Menu\Programs -> C:\ProgramData
C:\ProgramData + Settings.xml = C:\ProgramData\Settings.xml
in questo modo avrai il percorso radice relazionato all'OS (xp/Vista/7/8 ecc)
e dovrai solo accodarci il nome del file che intendi leggere
|
|
arterella (Normal User)
Rookie
Messaggi: 37
Iscritto: 14/07/2012
|
Postato originariamente da Renny:
Ciao..
Se tu sai il percorso del file sia nel caso in cui il programma giri su pc con WinXp sia nel caso sia con Win7, la cosa mi sembra abbastanza banale..
Con
Codice sorgente - presumibilmente Plain Text |
My.Computer.Info.OSFullName
|
O istruzioni simili recuperi il nome del sistema operativo e di conseguenza con un IF assegni la path giusta del file.
Oppure con
Codice sorgente - presumibilmente Plain Text |
Puoi verificare se un file esiste e agire di conseguenza.
Se invece devi cercare il file che si chiama setting.xml per tutto l'HD del computer.. bhe.. non so se nel frameword ci siano funzioni già pronte per ricerche complete nel PC. Altrimenti devi scrivere tu un metodo ricorsivo. Ma non è difficile.
CIAO! |
poi ieri, pochi minuti dopo aver postato, avevo fatto così
Codice sorgente - presumibilmente Plain Text |
System.IO.File.Exists("Settings.Xml")
My.Computer.FileSystem.FileExists("Settings.Xml")
|
però ho avuto una richiesta per una modifica ad un altro programma ed ho accantonato questo.
pomeriggio provo in debug e poi vi so dire se funziona |
|
arterella (Normal User)
Rookie
Messaggi: 37
Iscritto: 14/07/2012
|
niente con il primo metodo perchè mi va nella cartella Utente.
con environment..... ho un problema....
se in win7 C:\ProgramData corrisponde a C:\Documents and Settings\All Users\Dati applicazioni\ di sistemi come winXP, con questa cosa dell'Environment come faccio a dirgli di partire da C:\?
non ci riesco perchè mi fa andare direttamente in program data, che va bene per win7 ma per xp no....
|
|
arterella (Normal User)
Rookie
Messaggi: 37
Iscritto: 14/07/2012
|
Alla fine ho fatto così:
Codice sorgente - presumibilmente VB.NET |
For Each xDate In Me.Settings.SalesHeader.DatesExtracted Dim xDateExtracted = xDate.Date Dim Percorso = "c:/ProgramData\Settings.xml" 'Win 7 Dim Percorso2 = "C:\Documents and Settings\All Users\Dati applicazioni\\Settings.xml" 'Win Xp If System. IO. File. Exists(Percorso ) Then 'PER WINDOWS 7 Dim linee As String() = IO. File. ReadAllLines(Percorso ) Dim oFileState As New Settings.FileState Dim DataDate = oFileState.DataDate Dim oTempSettings = CType(Me.Settings.Clone, Phoenix.DataCollect.Settings.Settings) For Each oElement In Me.Settings.SalesHeader.FileState If oElement.DataDate = xDateExtracted Then If oElement.CheckedFTPPresence = False Then Me._Force = True _CreateAndUploadFilesPeriod2(DataDate) Else Me._Force = False End If End If Next Me._Force = False Else If System. IO. File. Exists(Percorso2 ) Then 'PER WINDOWS XP Dim linee2 As String() = IO. File. ReadAllLines(Percorso2 ) Dim oFileState As New Settings.FileState Dim DataDate = oFileState.DataDate Dim oTempSettings = CType(Me.Settings.Clone, Phoenix.DataCollect.Settings.Settings) For Each oElement In Me.Settings.SalesHeader.FileState If oElement.DataDate = xDateExtracted Then If oElement.CheckedFTPPresence = False Then Me._Force = True _CreateAndUploadFilesPeriod2(DataDate) Else Me._Force = False End If End If Next Me._Force = False End If End If Next
|
|
|
Renny (Normal User)
Expert
Messaggi: 231
Iscritto: 30/07/2011
|
Perché ripeti 2 volte le stesse istruzioni di lettura del file XML quando l'unico valore che cambia è il percorso del file?
Se fai un if, verifichi se il file esiste e poi poi imposti il percorso del file di conseguenza..
|
|
arterella (Normal User)
Rookie
Messaggi: 37
Iscritto: 14/07/2012
|
Postato originariamente da Renny:
Perché ripeti 2 volte le stesse istruzioni di lettura del file XML quando l'unico valore che cambia è il percorso del file?
Se fai un if, verifichi se il file esiste e poi poi imposti il percorso del file di conseguenza.. |
mh mi andava in eccezione :S
Domani mattina riprovo
grazie Ultima modifica effettuata da arterella il 09/08/2012 alle 17:57 |
|